#pragma once 

#include <stdio.h>

// 缓冲区大小、刷新模式的宏定义
#define MAX 1024                // 输出缓冲区的最大长度
#define NONE_FLUSH (1<<0)      // 无刷新
#define LINE_FLUSH (1<<1)      // 行刷新：遇到换行符\n时刷新
#define FULL_FLUSH (1<<2)      // 全刷新：缓冲区满时刷新（仅示例，代码中未用）

typedef struct IO_FILE
{
    int fileno;         // 文件描述符（对应系统调用的fd，如0、1、2或open返回的fd）
    int flag;           // 文件打开模式的标记（如读写、追加等）
    char outbuffer[MAX];// 输出缓冲区：暂存要写入的数据，实现“缓冲I/O”
    int bufferlen;      // 缓冲区中已存储的数据长度
    int flush_method;   // 刷新策略（行刷新、全刷新等）
}MyFile;

MyFile *MyFopen(const char *path, const char *mode);
void MyClose(MyFile *file);
int MyFwrite(MyFile *file, void *str, int len);
void MyFFlush(MyFile *file);
